package linjie

import (
	"errors"

	"gitee.com/mad-wud/lin"
	"github.com/360EntSecGroup-Skylar/excelize"
)

type Eexcel struct {
}

var excel标题 = `A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,AA,AB,AC,AD,AE,AF,AG,AH,AI,AJ,AK,AL,AM,AN,AO,AP,AQ,AR,AS,AT,AU,AV,AW,AX,AY,AZ,BA,BB,BC,BD,BE,BF,BG,BH,BI,BJ,BK,BL,BM,BN,BO,BP,BQ,BR,BS,BT,BU,BV,BW,BX,BY,BZ,CA,CB,CC,CD,CE,CF,CG,CH,CI,CJ,CK,CL,CM,CN,CO,CP,CQ,CR,CS,CT,CU,CV,CW,CX,CY,CZ,DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM,DN,DO,DP,DQ,DR,DS,DT,DU,DV,DW,DX,DY,DZ,EA,EB,EC,ED,EE,EF,EG,EH,EI,EJ,EK,EL,EM,EN,EO,EP,EQ,ER,ES,ET,EU,EV,EW,EX,EY,EZ,FA,FB,FC,FD,FE,FF,FG,FH,FI,FJ,FK,FL,FM,FN,FO,FP,FQ,FR,FS,FT,FU,FV,FW,FX,FY,FZ,GA,GB,GC,GD,GE,GF,GG,GH,GI,GJ,GK,GL,GM,GN,GO,GP,GQ,GR,GS,GT,GU,GV,GW,GX,GY,GZ,HA,HB,HC,HD,HE,HF,HG,HH,HI,HJ,HK,HL,HM,HN,HO,HP,HQ,HR,HS,HT,HU,HV,HW,HX,HY,HZ,IA,IB,IC,ID,IE,IF,IG,IH,II,IJ,IK,IL,IM,IN,IO,IP,IQ,IR,IS,IT,IU,IV,IW,IX,IY,IZ,JA,JB,JC,JD,JE,JF,JG,JH,JI,JJ,JK,JL,JM,JN,JO,JP,JQ,JR,JS,JT,JU,JV,JW,JX,JY,JZ,KA,KB,KC,KD,KE,KF,KG,KH,KI,KJ,KK,KL,KM,KN,KO,KP,KQ,KR,KS,KT,KU,KV,KW,KX,KY,KZ,LA,LB,LC,LD,LE,LF,LG,LH,LI,LJ,LK,LL,LM,LN,LO,LP,LQ,LR,LS,LT,LU,LV,LW,LX,LY,LZ,MA,MB,MC,MD,ME,MF,MG,MH,MI,MJ,MK,ML,MM,MN,MO,MP,MQ,MR,MS,MT,MU,MV,MW,MX,MY,MZ,NA,NB,NC,ND,NE,NF,NG,NH,NI,NJ,NK,NL,NM,NN,NO,NP,NQ,NR,NS,NT,NU,NV,NW,NX,NY,NZ,OA,OB,OC,OD,OE,OF,OG,OH,OI,OJ,OK,OL,OM,ON,OO,OP,OQ,OR,OS,OT,OU,OV,OW,OX,OY,OZ,PA,PB,PC,PD,PE,PF,PG,PH,PI,PJ,PK,PL,PM,PN,PO,PP,PQ,PR,PS,PT,PU,PV,PW,PX,PY,PZ,QA,QB,QC,QD,QE,QF,QG,QH,QI,QJ,QK,QL,QM,QN,QO,QP,QQ,QR,QS,QT,QU,QV,QW,QX,QY,QZ,RA,RB,RC,RD,RE,RF,RG,RH,RI,RJ,RK,RL,RM,RN,RO,RP,RQ,RR,RS,RT,RU,RV,RW,RX,RY,RZ,SA,SB,SC,SD,SE,SF,SG,SH,SI,SJ,SK,SL,SM,SN,SO,SP,SQ,SR,SS,ST,SU,SV,SW,SX,SY,SZ,TA,TB,TC,TD,TE,TF,TG,TH,TI,TJ,TK,TL,TM,TN,TO,TP,TQ,TR,TS,TT,TU,TV,TW,TX,TY,TZ,UA,UB,UC,UD,UE,UF,UG,UH,UI,UJ,UK,UL,UM,UN,UO,UP,UQ,UR,US,UT,UU,UV,UW,UX,UY,UZ,VA,VB,VC,VD,VE,VF,VG,VH,VI,VJ,VK,VL,VM,VN,VO,VP,VQ,VR,VS,VT,VU,VV,VW,VX,VY,VZ,WA,WB,WC,WD,WE,WF,WG,WH,WI,WJ,WK,WL,WM,WN,WO,WP,WQ,WR,WS,WT,WU,WV,WW,WX,WY,WZ,XA,XB,XC,XD,XE,XF,XG,XH,XI,XJ,XK,XL,XM,XN,XO,XP,XQ,XR,XS,XT,XU,XV,XW,XX,XY,XZ,YA,YB,YC,YD,YE,YF,YG,YH,YI,YJ,YK,YL,YM,YN,YO,YP,YQ,YR,YS,YT,YU,YV,YW,YX,YY,YZ,ZA,ZB,ZC,ZD,ZE,ZF,ZG,ZH,ZI,ZJ,ZK,ZL,ZM,ZN,ZO,ZP,ZQ,ZR,ZS,ZT,ZU,ZV,ZW,ZX,ZY,ZZ
`

// 很奇怪的问题 引用包取执行 就好导致 没有全部写出  就打开文件  怀疑是异步io导致的  直接复制方法来用就好了
func (Eexcel) B保存excel(保存路径 string, sheet名称 string, 列表数据 lin.L列表, 保存后是否打开 bool, 要导出列表标题 ...string) (返回错误 error) {
	if len(要导出列表标题) == 0 && 列表数据.QS取数量() > 0 {
		表 := 列表数据.QJ取键值表(0)
		要导出列表标题 = 表.QJ取键组()
	}
	if sheet名称 == "" {
		sheet名称 = "表1"
	}
	f := excelize.NewFile()
	表索引 := f.NewSheet(sheet名称)
	列坐标位置 := 全_文本.F分割文本(excel标题, ",")
	for i, v := range 要导出列表标题 {
		字母 := 列坐标位置[i]
		f.SetCellValue(sheet名称, 字母+"1", v)
	}
	行数量 := 列表数据.QS取数量()

	for i := 0; i < 行数量; i++ {
		字母位置 := 全_类型.D到文本(i + 2)
		表 := 列表数据.QJ取键值表(i)
		for ii, v := range 要导出列表标题 {
			字母 := 列坐标位置[ii]
			值, _ := 表.Q取值(v)
			f.SetCellValue(sheet名称, 字母+字母位置, 值)
		}
	}
	f.SetActiveSheet(表索引)
	if 返回错误 = f.SaveAs(保存路径); 返回错误 == nil {
		if 保存后是否打开 {
			全_文件.Y运行_文件_去黑框(保存路径)
		}
	}
	return

}
func (Eexcel) Z载入excel数据(路径, sheet名称 string) (返回列表 lin.L列表, 返回错误 error) {
	if sheet名称 == "" {
		sheet名称 = "Sheet1"
	}
	返回列表.Q清空()
	f, err := excelize.OpenFile(路径)
	if err != nil {
		返回错误 = err
		return
	}
	表对象 := f.GetRows(sheet名称)
	if len(表对象) < 1 {
		返回错误 = errors.New("没有数据")
		return
	}
	var 标题组 []string
	for 行索引, 行数据 := range 表对象 {
		表 := lin.NewJ键值表()
		for 列索引, 列值 := range 行数据 {
			if 行索引 == 0 {
				标题组 = append(标题组, 列值)
			} else {
				if 列索引 < len(标题组) {
					表.ZW置文本(列值, 标题组[列索引])
				}
			}
		}
		if 行索引 != 0 {
			返回列表.T添加值(表)
		}
	}
	return
}
